package org.jeecg.modules.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.entity.ProjectProfessorInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.vo.ProjectProfessorStar;
import org.jeecg.modules.vo.SelectForEntity;

import java.util.List;

/**
 * @Description: 项目所需专家抽取状态
 * @Author: jeecg-boot
 * @Date:   2020-07-06
 * @Version: V1.0
 */
public interface IProjectProfessorInfoService extends IService<ProjectProfessorInfo> {
    /**
     *  保存项目评价和对参与项目的专家的个人评分
     * @param projectId 项目id
     * @param comment 项目评价
     * @param professors 专家们的id和得分集合
     * @param files 项目结束的附件
     * @return
     */
    int updateComment(String projectId, String comment, List<ProjectProfessorStar> professors,String files);

    /**
     * 重写多表分页，实现模糊查询
     * @param page
     * @param selectForEntity
     * @return
     */
    IPage<ProjectProfessorInfo> pageByEntity(Page<ProjectProfessorInfo> page, SelectForEntity selectForEntity);

    /**
     *  减少特定项目中的特定专家类别抽取中的专家人数
     * @param projectId 项目id
     * @param professorType 专家类型
     * @param num 减一或者加一
     */
    public  void thinkNumberReduce(String projectId,String professorType,int num);

    /**
     * 紧急请假列表查询
     *      根据专家的id查找所有的项目并分页
     * @param page 分页必备
     * @param user 当前操作用户的信息
     * @return
     */
    IPage<ProjectProfessorInfo> pageByProfessorUserId(Page<ProjectProfessorInfo> page, LoginUser user);
    IPage<ProjectProfessorInfo> pageByProfessorUserId01(Page<ProjectProfessorInfo> page, LoginUser user);
    IPage<ProjectProfessorInfo> pageByProfessorUserId03(Page<ProjectProfessorInfo> page, LoginUser user,String projectName);
}
